angular.module('medicoApp').controller('medicoCtrl', function($scope,ngDialog,medicoServices){

	
	$scope.tipos = new Array();
	$scope.tipoServicio = new Array();
	$scope.especializacion = new Array();
	$scope.medico = new Object();
	$scope.persona = new Object();
	$scope.medicos = new Array();
	
	showMenssageInicial = function(){
		$scope.titulo_mensajes = "Información!";
		$scope.descripcion_mensajes  = "En esta vista puede administrar el maestro de medico";
		divMessages.className = "alert alert-info alert-dismissable";
		
	}
	
	var divMessages  = document.querySelector('#messageBox');
	showMenssageInicial();

	/**
	 * Se cargan de forma paralela los maestros
	 * */
	$scope.cargarMaestros = function() {
		try
			{
			var exito = function(respuesta){
				try{

					cargarTipoDocumento(angular.fromJson(respuesta.data.listaTipoDocumento));
					cargarTipoServicio(angular.fromJson(respuesta.data.listaTipoServicio));
					$scope.cargarEspecialidad();

				}catch(e){
					alert(e.message);
				}
			}

			var error = function(respuesta){
				$scope.titulo_mensajes = "Error!";
				$scope.descripcion_mensajes  = "Se produjo un error al momento de cargar los valores iniciales";
				divMessages.className = "alert alert-danger alert-dismissable";
			}
			medicoServices.sendGet(hostSnake+context+endPointDatosMaestro+methodGetMaestros,exito,error);
		}catch(e){
			$scope.titulo_mensajes = "Error!";
			$scope.descripcion_mensajes  = "Se produjo un error al momento de cargar los valores iniciales";
			divMessages.className = "alert alert-danger alert-dismissable";
		}

	}

	cargarTipoDocumento = function(tipoDocumento){

		$scope.tipos.push({codatmaestro: null,dsdatmaestro: "Seleccione"});

		$.each(tipoDocumento, function( index , datomaestro ) {
			$scope.tipos.push(datomaestro);
		});
	}
	cargarTipoServicio = function(tipoServicio){

		$scope.tipoServicio.push({codatmaestro: null,dsdatmaestro: "Seleccione"});

		$.each(tipoServicio, function( index , datomaestro ) {
			$scope.tipoServicio.push(datomaestro);
		});
	}

	$scope.cargarEspecialidad = function() {
		try{
			var exito = function(respuesta){

				try{
					cargarEspecialidades(angular.fromJson(respuesta.data));
				}catch(e){
					alert(e.message);
				}
			}

			var error = function(respuesta){
				$scope.titulo_mensajes = "Error!";
				$scope.descripcion_mensajes  = "Se produjo un error al momento de cargar los valores iniciales";
				divMessages.className = "alert alert-danger alert-dismissable";
			}

			medicoServices.sendGet(hostSnake+context+endPointEspecialidad+methodGetEspecialidad,exito,error);
		}catch(e){
			$scope.titulo_mensajes = "Error!";
			$scope.descripcion_mensajes  = "Se produjo un error al momento de cargar los valores iniciales";
			divMessages.className = "alert alert-danger alert-dismissable";
		}

	}

	cargarEspecialidades = function(especialidades){

		$scope.especializacion.push({cdespecialidad: null,dsespecialidad: "Seleccione"});

		$.each(especialidades, function( index , datomaestro ) {
			$scope.especializacion.push(datomaestro);
		});

		$scope.consultarMedico();
	}


	$scope.buscarEvent = function(keyEvent,persona){

		if(window.event && keyEvent.keyCode === ENTER){
			$scope.buscarPersona(persona);
		}

	}

	$scope.downPress = function(keyEvent){

		if(window.event && keyEvent.keyCode === DELETE){
			limpirPersona();
		}

	}

	limpirPersona = function(){

		$scope.persona = new Object();
		showMenssageInicial();

	}

	$scope.limpiarMedico = function(){

		$scope.medico = new Object();
		$scope.medicos = new Array();
		limpirPersona();
		$scope.consultarMedico();

	}

	$scope.buscarPersona = function(persona){

		try{
			var exito = function(respuesta){

				try{

					var responsePersona = angular.fromJson(respuesta.data);

					if(responsePersona.scpersona === null){
						$scope.titulo_mensajes = "Información!";
						$scope.descripcion_mensajes  = "No se encontro persona con el documento ingresado";
						divMessages.className = "alert alert-info alert-dismissable";
					}else{

						$scope.persona = responsePersona;

					}

				}catch(e){
					alert(e.message);
				}
			}

			var error = function(respuesta){
				$scope.titulo_mensajes = "Error!";
				$scope.descripcion_mensajes  = "Se produjo un error al momento de cargar la persona";
				divMessages.className = "alert alert-danger alert-dismissable";
			}

			if(persona.dsidentificacion !== '' && persona.dsidentificacion !== null && persona.dsidentificacion !== undefined){
				showMenssageInicial();
				var sendPersona={dsidentificacion: persona.dsidentificacion};
				medicoServices.sendPost(angular.toJson(sendPersona),hostSnake+context+endPointPersona+methodGetPersonaCd,exito,error);
			}else{
				$scope.titulo_mensajes = "Validación!";
				$scope.descripcion_mensajes  = "Ingrese el documento de la persona que desa buscar";
				divMessages.className = "alert alert-danger alert-dismissable";
			}
		}catch(e){
			$scope.titulo_mensajes = "Error!";
			$scope.descripcion_mensajes  = "Se produjo un error al momento de cargar los valores iniciales";
			divMessages.className = "alert alert-danger alert-dismissable";
		}

	}
	
	$scope.grabarMedico =  function(persona,especilizacion,tipoServicioMaestro){

		try{
			var exito = function(respuesta){

				try{

					var responseMedico = angular.fromJson(respuesta.data);

					if(responseMedico.codigo === 200){
						$scope.titulo_mensajes = "Información!";
						$scope.descripcion_mensajes  = responseMedico.mensaje;
						divMessages.className = "alert alert-info alert-dismissable";
					}else{
						$scope.titulo_mensajes = "Error!";
						$scope.descripcion_mensajes  = responseMedico.mensaje;
						divMessages.className = "alert alert-danger alert-dismissable";
					}

				}catch(e){
					alert(e.message);
				}
			}

			var error = function(respuesta){
				$scope.titulo_mensajes = "Error!";
				$scope.descripcion_mensajes  = "Se produjo un error al momento de grabar el medico";
				divMessages.className = "alert alert-danger alert-dismissable";
			}

			var sendEspecializacion = especilizacion;
			var senPersona = persona;
			var codigoRegistro = $scope.medico.conumeroregistro;
			var maestroTipoServicio = tipoServicioMaestro;

			var sendMedico = {

					scpersona: senPersona,
					conumeroregistro: codigoRegistro,
					scespecialidad : sendEspecializacion,
					sctiposervicio : maestroTipoServicio,
					cousuario : 'afescobar'

			};

			medicoServices.sendPut(angular.toJson(sendMedico),hostSnake+context+endPointMedico+methodSetMedico,exito,error);

		}catch(e){
			$scope.titulo_mensajes = "Error!";
			$scope.descripcion_mensajes  = "Se produjo un error al momento de grabar el medico";
			divMessages.className = "alert alert-danger alert-dismissable";
		}


	}

	$scope.consultarMedico = function(){

		try{
			var exito = function(respuesta){
				try{

					var objeto = respuesta.data;
					$scope.medicos = new Array();
					$scope.medicos = angular.fromJson(objeto);

				}catch(e){
					alert(e.message);
				}
			}

			var error = function(respuesta){
				$scope.titulo_mensajes = "Error!";
				$scope.descripcion_mensajes  = "Se produjo un error al momento de consultar la información de medicos";
				divMessages.className = "alert alert-danger alert-dismissable";
				alert(angular.toJson(respuesta));
			}
			medicoServices.sendGet(hostSnake+context+endPointMedico+methodGetAllMedicos,exito,error);

		}catch(e){
			$scope.titulo_mensajes = "Error!";
			$scope.descripcion_mensajes  = "Se produjo un error al momento de consultar la información de medicos";
			divMessages.className = "alert alert-danger alert-dismissable";
			alert(e);
		}

	}

	$scope.eliminar = function(medico){

		try{
			var exito = function(respuesta){
				try{

					var responseRemoveMedico = angular.fromJson(respuesta.data);
					alert(responseRemoveMedico.mensaje);
					$scope.limpiarMedico();

				}catch(e){
					alert(e.message);
				}
			}

			var error = function(respuesta){
				$scope.titulo_mensajes = "Error!";
				$scope.descripcion_mensajes  = "Se produjo un error al momento de consultar la información de medicos";
				divMessages.className = "alert alert-danger alert-dismissable";
				alert(angular.toJson(respuesta));
			}

			if(confirm('Esta seguro que desea eliminar el registro?')){
				medicoServices.sendPut(angular.toJson(medico),hostSnake+context+endPointMedico+methodRemoveMedico,exito,error);
			}



		}catch(e){
			$scope.titulo_mensajes = "Error!";
			$scope.descripcion_mensajes  = "Se produjo un error al momento de consultar la información de medicos";
			divMessages.className = "alert alert-danger alert-dismissable";
			alert(e);
		}

	}


	$scope.cargarMaestros();



});